//
//  IdCardUtil.m
//  YHOCR
//
//  Created by 杨杨子 on 2018/7/25.
//  Copyright © 2018年 杨杨子. All rights reserved.
//

#import "IdCardUtil.h"
#import "PublicTool.h"

@implementation IdCardUtil
/**
 * 身份证正面特性比较
 *
 * @return 是否符合身份证正面特性
 */
-(BOOL)checkFrontFeature:(UIImage *)bitmap{
    int width = bitmap.size.width;
    int height = bitmap.size.height;
    //一个字符的占比大约5%宽度, 头尾至少应该有一个字符的空白区域
    int padding = (int) (width * 0.05);
    int lastBlack1 = padding;
    int lastWhite1 = padding;
    int lastBlack2 = padding;
    int lastWhite2 = padding;
    for (int i = 0; i < bitmap.size.width; i++) {
        
        int color1 = [[PublicTool numberHexString:[[PublicTool hexFromUIColor:[PublicTool colorAtPixel:CGPointMake(i, height / 2 - height / 8) WithImage:bitmap]] substringFromIndex:1]] intValue];
        
        int color2 = [[PublicTool numberHexString:[[PublicTool hexFromUIColor:[PublicTool colorAtPixel:CGPointMake(i, height / 2 + height / 8) WithImage:bitmap]] substringFromIndex:1]] intValue];
        if (i < padding) {//头
            if ((color1 < 16777215 / 2.0) || (color2 < 16777215 / 2.0)) {
                return NO;
            }
        } else if (i > width - padding) {//尾
            if ((color1 < 16777215 / 2.0) || (color2 < 16777215 / 2.0)) {
                return NO;
            }
        } else {//中间区域
            if ((i - lastBlack1) > padding * 2 || (i - lastWhite1) > padding * 2) {
                return NO;
            }
            if ((i - lastBlack2) > padding * 2 || (i - lastWhite2) > padding * 2) {
                return NO;
            }
            if (color1 < 16777215 / 2.0)
            {
                lastBlack1 = i;
            } else if(!(color1 < 16777215 / 2.0))
            {
                lastWhite1 = i;
            }
            if (color2 < 16777215 / 2.0)
            {
                lastBlack2 = i;
            } else if (!(color2 < 16777215 / 2.0))
            {
                lastWhite2 = i;
            }
        }
    }
    return YES;
}
@end
